package cn.izeno.wx.models.component

import com.alibaba.fastjson.annotation.JSONField
import java.io.Serializable

/**
 * 第三方平台component_access_token是第三方平台的接口的调用凭据，
 * 也叫做令牌（component_access_token）。每个令牌是存在有效期（2小时）的，
 * 且令牌的调用不是无限制的，请第三方平台做好令牌的管理，在令牌快过期时（比如1小时50分）再进行刷新。
 */
class ComponentToken : Serializable {
  @field:JSONField(name = "errcode")
  var errCode: Int = 0

  @field:JSONField(name = "errmsg")
  var errMsg = ""

  /** component_access_token */
  @JSONField(name = "component_access_token")
  var token: String = ""


  /**
   * 2h
   * 当前时间后推两小时
   */
  @field:JSONField(name = "expires_in")
  var expiredAt: Long = 7200L
    set(value) {
      field = when (value) {
        7200L -> System.currentTimeMillis() + value * 1000
        else -> value
      }
    }
}